package com.ioufev.mqtt.utils;



/*
*
* 16进制生成类无用
*
*
*
* */
public class HexDataGenerator {

    public static void main(String[] args) {
        // 数据项
        float temperature = 25.35f;
        float humidity = 60.12f;
        int co2 = 400;
        int formaldehyde = 50;
        int tvoc = 100;
        int pm25 = 12;
        int pm10 = 30;

        // 根据数据项的个数和每项的数据长度计算需要的数组长度
        byte[] data = new byte[14]; // 7项，每项2字节，共14字节
        int index = 0;

        // 温度
        int temp = Math.round(temperature * 100); // 将温度乘以100并取整
        data[index++] = (byte) (temp >> 8); // 高字节
        data[index++] = (byte) (temp & 0xFF); // 低字节

        // 湿度
        int hum = Math.round(humidity * 100); // 将湿度乘以100并取整
        data[index++] = (byte) (hum >> 8); // 高字节
        data[index++] = (byte) (hum & 0xFF); // 低字节

        // 二氧化碳
        data[index++] = (byte) (co2 >> 8); // 高字节
        data[index++] = (byte) (co2 & 0xFF); // 低字节

        // 甲醛
        data[index++] = (byte) (formaldehyde >> 8); // 高字节
        data[index++] = (byte) (formaldehyde & 0xFF); // 低字节

        // TVOC
        data[index++] = (byte) (tvoc >> 8); // 高字节
        data[index++] = (byte) (tvoc & 0xFF); // 低字节

        // PM2.5
        data[index++] = (byte) (pm25 >> 8); // 高字节
        data[index++] = (byte) (pm25 & 0xFF); // 低字节

        // PM10
        data[index++] = (byte) (pm10 >> 8); // 高字节
        data[index++] = (byte) (pm10 & 0xFF); // 低字节

        // 转换为十六进制字符串
        String hexString = bytesToHex(data);
        System.out.println("生成的16进制数据: " + hexString);
    }

    // 辅助方法：将字节数组转换为十六进制字符串
    private static String bytesToHex(byte[] bytes) {
        StringBuilder sb = new StringBuilder();
        for (byte b : bytes) {
            sb.append(String.format("%02x", b));
        }
        return sb.toString();
    }
}
